from xtquant import xtdata
import pandas as pd
'''
get_market_data(field_list=[], stock_list=[], period='1d', start_time='', end_time='', count=-1, dividend_type='none', fill_data=True)
释义
从缓存获取行情数据，是主动获取行情的主要接口
参数
field_list - list 数据字段列表，传空则为全部字段
stock_list - list 合约代码列表
period - string 周期
start_time - string 起始时间
end_time - string 结束时间
count - int 数据个数
默认参数，大于等于0时，若指定了start_time，end_time，此时以end_time为基准向前取count条；若start_time，end_time缺省，默认取本地数据最新的count条数据；若start_time，end_time，count都缺省时，默认取本地全部数据
dividend_type - string 除权方式
fill_data - bool 是否向后填充空缺数据
返回
period为1m 5m 1d等K线周期时
返回dict { field1 : value1, field2 : value2, ... }
field1, field2, ... ：数据字段
value1, value2, ... ：pd.DataFrame 数据集，index为stock_list，columns为time_list
各字段对应的DataFrame维度相同、索引相同
period为tick分笔周期时
返回dict { stock1 : value1, stock2 : value2, ... }
stock1, stock2, ... ：合约代码
value1, value2, ... ：np.ndarray 数据集，按数据时间戳time增序排列
备注
获取lv2数据时需要数据终端有lv2数据权限
时间范围为闭区间
获取本地行情数据
'''
stock_list=['600031.SH','600111.SH']
for stock in stock_list:
    xtdata.subscribe_quote(stock_code=stock,period='1d')
df=xtdata.get_market_data(field_list=[], stock_list=['600031.SH','600111.SH'], 
                          period='1d', start_time='20210101', end_time='20240419',
                            count=-100, dividend_type='none', fill_data=True)
print(df)
data=pd.DataFrame()
keys_list=list(df.keys())
for stock in stock_list:
    for keys in keys_list:
        df1=pd.DataFrame(df[keys])
        df1=df1.T
        data['{}_{}'.format(stock,keys)]=df1[stock]
print(data)

